home *** CD-ROM | disk | FTP | other *** search
/ Aminet 33 / Aminet 33 - October 1999.iso / Aminet / dev / basic / IdentifyDevBas.lha / MyExp.bas < prev   
Encoding:
BASIC Source File  |  1999-08-05  |  4.0 KB  |  105 lines

  1. ' *********************************************************************
  2. '         MYEXP © 1997 by Richard Körber -- All Rights Reserved
  3. '
  4. '                        C to HBASIC conversion
  5. '               by Dámaso D. Estévez <amidde@arrakis.es>
  6. ' *********************************************************************
  7.  
  8. REM $include dos.bh
  9. REM $include exec.bh
  10. REM $include identify.bh
  11. REM $include expansion.bc
  12.  
  13. LIBRARY OPEN "identify.library",6&
  14. LIBRARY OPEN "dos.library",LIBRARY_MINIMUM&
  15. LIBRARY OPEN "exec.library",LIBRARY_MINIMUM&
  16.  
  17.     DIM tags&(5)
  18.     tmp$ = ""
  19.  
  20.     expans&  = NULL&
  21.  
  22.     counter% = 0%
  23.     size&    = 0&
  24.     unit$    = ""
  25.  
  26.     REM ******** A method for create easily a buffer filled with zeroes *******
  27.     REM ************ (but, beware with the Basic garbage collector!) **********
  28.     REM ***********************************************************************
  29.     REM ************** Un método para crear fácilmente una zona ***************
  30.     REM ********** de memoria intermedia (buffer) rellena de ceros ************
  31.     REM **** (pero, ¡tenga cuidado con el recolector de basura del Basic!) ****
  32.     REM ***********************************************************************
  33.     manuf$  = STRING$(IDENTIFYBUFLEN&,CHR$(0))
  34.     prod$   = STRING$(IDENTIFYBUFLEN&,CHR$(0))
  35.     pclass$ = STRING$(IDENTIFYBUFLEN&,CHR$(0))
  36.  
  37.     REM **************** A method for to create a structure *******************
  38.     REM *********** (the variable contains the initial address) ***************
  39.     REM ***********************************************************************
  40.     REM *************** Un método para crear una estructura *******************
  41.     REM ******* (la variable contiene la dirección donde comienza ésta) *******
  42.     REM ***********************************************************************
  43.     expans& = AllocMem&(ConfigDev_sizeof%,MEMF_PUBLIC& OR MEMF_CLEAR&)
  44.  
  45.     IF expans& <> NULL& THEN
  46.  
  47.         PRINT "Nr Address  Size Description"
  48.         PRINT "----------------------------------------------------------"
  49.  
  50.         TAGLIST VARPTR(tags&(0)), _
  51.             IDTAG_ManufStr& ,SADD(manuf$), _
  52.             IDTAG_ProdStr&  ,SADD(prod$), _
  53.             IDTAG_ClassStr& ,SADD(pclass$), _
  54.             IDTAG_Expansion&,expans&, _
  55.             TAG_DONE&
  56.  
  57.         WHILE IdExpansion&(VARPTR(tags&(0))) = NULL&
  58.  
  59.             unit$ = "K"                                       ' KBytes
  60.             size& = PEEKL(PEEKL(expans&)+cd_BoardSize%) >> 10 ' Bytes -> KBytes
  61.             IF size& >= 1024 THEN
  62.                 unit$ = "M"                                     ' MBytes
  63.                 size& = size& >> 10                             ' KBytes -> MBytes
  64.             END IF
  65.  
  66.  
  67.             REM ** The library generate C strings style: for to print with PRINT, **
  68.             REM **** the strings are cut AND the CHR$(0) terminator is deleted *****
  69.             REM ********************************************************************
  70.             REM ** La biblioteca genera cadenas al estilo del C: para imprimirlas **
  71.             REM ************* con el comando PRINT deben ser recortadas ************
  72.             REM ************ y eliminado el terminador de cadena CHR$(0) ***********
  73.             REM ********************************************************************
  74.             manuf$  = LEFT$(manuf$,INSTR(1,manuf$,CHR$(0))-1)
  75.             prod$   = LEFT$(prod$,INSTR(1,prod$,CHR$(0))-1)
  76.             pclass$ = LEFT$(pclass$,INSTR(1,pclass$,CHR$(0))-1)
  77.  
  78.             INCR counter%
  79.             PRINT USING "##";counter%;
  80.             PRINT CHR$(32);
  81.  
  82.             REM **** With theses two lines, the program prints the hexadecimal ****
  83.             REM ****** address with eight digits always (filled with zeroes) ******
  84.             REM *******************************************************************
  85.             REM ******* Con estas dos líneas, el programa imprime siempre *********
  86.             REM ************** la dirección de memoria hexadecimal ****************
  87.             REM ************* con ocho dígitos (la rellena con ceros) *************
  88.             REM *******************************************************************
  89.             tmp$=HEX$(PEEKL(PEEKL(expans&)+cd_BoardAddr%))
  90.             PRINT LEFT$(STRING$(8,CHR$(48)),8-LEN(tmp$));tmp$;
  91.  
  92.             PRINT CHR$(32);
  93.             PRINT USING "###";size&;
  94.             PRINT unit$;CHR$(32);manuf$;CHR$(32);prod$;CHR$(32);"(";pclass$;")"
  95.  
  96.         WEND
  97.  
  98.         FreeMem& expans&,ConfigDev_sizeof%
  99.  
  100.     END IF
  101.  
  102. LIBRARY CLOSE
  103.  
  104. END
  105.